package com.itheima.reggie.common;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Slf4j
@Component//组件中的方法交给Spring给运作
public class MyMetaObjectHander implements MetaObjectHandler {
    /**
     * insertFill
     *    添加的时候 你填充啥?
     *     增加有4个字段
     * @param metaObject  元数据对象作用
     *                    作用可以
     *             给指定字段 填充 指定的值
     *
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("进行增加的自动填充了...");
        //自动填充的时间
        metaObject.setValue("createtime", LocalDateTime.now());
        metaObject.setValue("updatetime",LocalDateTime.now());
        log.info("当处理线时候的线程id是"+Thread.currentThread().getId());
//        当从线程中的Thread
//        ThreadLocal<Long> threadLocal = BaseContext.instance();
//        Long empId = threadLocal.get();
        Long empId=BaseContext.getCurrentId();

        // 自动填充的 是 登录用户id
        // 暂时先不取
        metaObject.setValue("createUser",empId);
        metaObject.setValue("updateUser",empId);
    }
    /*
          updateFill
             更新的时候  你填充啥
             更新两个字段
        */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("进行更新的自动填充物了哦...");

        log.info("当处理更新填充时候的线程id"+Thread.currentThread().getId());
        metaObject.setValue("updatatime",LocalDateTime.now());
        //自动填充的是用户id
//        ThreadLocal<Long> threadLocal = BaseContext.instance();
//        Long empId = threadLocal.get();
        Long empId=BaseContext.getCurrentId();
        metaObject.setValue("updateUser",empId);


    }
}
